CI با استفاده از Map (2)
مثال تزریق سازنده با استفاده از Map غیر رشته ای(دارای شی وابسته)
در این مثال از map به عنوان پاسخی که شامل پاسخ و کاربر است، استفاده می¬شود. در اینجا از جفت کلید و مقدار به عنوان شی استفاده می کنیم. اطلاعات پاسخ و کاربر به ترتیب عبارتند از answerId , answer, postedDate] [و [userId, username, emailId]. همانند مثال¬های قبلی، این مثال نیز برگرفته از فرومی است که" یک سوال می تواند چندین پاسخ داشته باشد" .
Question.java :
این کلاس شامل سه خصیصه، دو سازنده و متد displayInfo() برای نمایش اطلاعات است.
package com.javatpoint;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Question {
private int id;
private String name;
private Map< Answer,User> answers;
public Question() {}
public Question(int id, String name, Map< Answer, User> answers) {
super();
this.id = id;
this.name = name;
this.answers = answers;
}
public void displayInfo(){
System.out.println("question id:"+id);
System.out.println("question name:"+name);
System.out.println("Answers....");
Set< Entry< Answer, User>> set=answers.entrySet();
Iterator< Entry< Answer, User>> itr=set.iterator();
while(itr.hasNext()){
Entry< Answer, User> entry=itr.next();
Answer ans=entry.getKey();
User user=entry.getValue();
System.out.println("Answer Information:");
System.out.println(ans);
System.out.println("Posted By:");
System.out.println(user);
}
}
}
Answer.java
package com.javatpoint;
import java.util.Date;
public class Answer {
private int id;
private String answer;
private Date postedDate;
public Answer() {}
public Answer(int id, String answer, Date postedDate) {
super();
this.id = id;
this.answer = answer;
this.postedDate = postedDate;
}
public String toString(){
return "Id:"+id+" Answer:"+answer+" Posted Date:"+postedDate;
}
}
User.java
package com.javatpoint;
public class User {
private int id;
private String name,email;
public User() {}
public User(int id, String name, String email) {
super();
this.id = id;
this.name = name;
this.email = email;
}
public String toString(){
return "Id:"+id+" Name:"+name+" Email Id:"+email;
}
}
applicationContext.xml:
از دو خصیصه key-ref و value-ref از عنصر entry ، برای تعریف مرجع bean در map استفاده می شود.
< ?xml version="1.0" encoding="UTF-8" ?>
< beans 3. xmlns="http://www.springframework.org/schema/beans"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xmlns:p="http://www.springframework.org/schema/p"
6. xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
< bean id="answer1" class="com.javatpoint.Answer">
< constructor-arg value="1">< /constructor-arg>
< constructor-arg value="Java is a Programming Language">< /constructor-arg>
< constructor-arg value="12/12/2001">< /constructor-arg>
< /bean>
< bean id="answer2" class="com.javatpoint.Answer">
< constructor-arg value="2">< /constructor-arg>
< constructor-arg value="Java is a Platform">< /constructor-arg>
< constructor-arg value="12/12/2003">< /constructor-arg>
< /bean>
< bean id="user1" class="com.javatpoint.User">
< constructor-arg value="1">< /constructor-arg>
< constructor-arg value="Arun Kumar">< /constructor-arg>
< constructor-arg value="arun@gmail.com">< /constructor-arg>
< /bean>
< bean id="user2" class="com.javatpoint.User">
< constructor-arg value="2">< /constructor-arg>
< constructor-arg value="Varun Kumar">< /constructor-arg>
< constructor-arg value="Varun@gmail.com">< /constructor-arg>
< /bean>
< bean id="q" class="com.javatpoint.Question">
< constructor-arg value="1">< /constructor-arg>
< constructor-arg value="What is Java?">< /constructor-arg>
< constructor-arg>
< map>
< entry key-ref="answer1" value-ref="user1">< /entry>
< entry key-ref="answer2" value-ref="user2">< /entry>
< /map>
< /constructor-arg>
< /bean>
< /beans>
Test.java:
این کلاس bean را از فایل applicationContext.xml می گیرد و متد displayInfo() را برای نمایش اطلاعات فراخوانی می¬کند.
package com.javatpoint;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
Resource r=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(r);
Question q=(Question)factory.getBean("q");
q.displayInfo();
}
}